package com.zhuiyun.project.api.system.businesDept.mapper;

import com.zhuiyun.project.api.system.businesDept.entity.SysDept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName SysBusinesDeptServiceImpl
 * @Description TODO 租户部门管理 数据层
 * @Author wx
 * @Date 2023/12/5 20:59
 **/
@Mapper
public interface SysBusinesDeptMapper {

    /**
     * @Author wx
     * @Description 获取租户部门列表
     * @Date 2023/12/6 8:51
     * @Return
     * @param dept
     */
    List<SysDept> selectDeptList(SysDept dept);

    /**
     * @Author wx
     * @Description 校验部门名称是否唯一
     * @Date 2023/12/6 9:53
     * @Return
     * @param deptName
     */
    SysDept checkDeptNameUnique(String deptName, Long parentId,String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 根据部门id查询信息
    * @Date 2023/12/6 10:00
    * @Return 
    * @param venueUniqueIdentifier
    */
    SysDept selectDeptById(Long deptId,String venueUniqueIdentifier);

    /**
     * @Author wx
     * @Description 新增部门信息
     * @Date 2023/12/6 10:02
     * @Return
     * @param dept
     */
    int insertDept(SysDept dept);

    /**
     * @Author wx
     * @Description 根据id查询所有子部门
     * @Date 2023/12/6 11:41
     * @Return
     * @param deptId
     */
    int selectNormalChildrenDeptById(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 修改部门信息
    * @Date 2023/12/6 13:27
    * @Return
    * @param dept
    */
    int updateDept(SysDept dept);

    /**
    * @Author wx
    * @Description 修改所在部门正常状态
    * @Date 2023/12/6 13:29
    * @Return
    * @param deptIds
    */
    void updateDeptStatusNormal( String venueUniqueIdentifier, @Param("deptIds")  Long[] deptIds);

    /**
    * @Author wx
    * @Description 根据id查询所有子部门
    * @Date 2023/12/6 13:31
    * @Return
    * @param deptId
    */
    List<SysDept> selectChildrenDeptById(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 修改子元素关系
    * @Date 2023/12/6 13:33
    * @Return
    * @param depts
    */
    void updateDeptChildren(@Param("depts") List<SysDept> depts,String venueUniqueIdentifier);

    /**
     * @Author wx
     * @Description 是否存在部门子节点
     * @Date 2023/12/6 14:10
     * @Return
     * @param deptId
     */
    int hasChildByDeptId(Long deptId, String venueUniqueIdentifier);

    /**
     * @Author wx
     * @Description 查询部门是否存在用户
     * @Date 2023/12/6 14:16
     * @Return
     * @param deptId
     */
    int checkDeptExistUser(Long deptId, String venueUniqueIdentifier);

    /**
     * @Author wx
     * @Description 删除部门信息
     * @Date 2023/12/6 14:19
     * @Return
     * @param deptId
     */
    int deleteDeptById(Long deptId, String venueUniqueIdentifier);
}
